home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
AmigActive 22
/
AACD 22.iso
/
AACD
/
Resources
/
System
/
VersCheckGUI
/
src
/
main.c
< prev
next >
Wrap
C/C++ Source or Header
|
1999-10-19
|
11KB
|
496 lines
/*
* main ( int argc, char *argv[] )
*
* VersCheckGUI
*
* Copyright 1999 by Michaela Prüß
*
*/
#include "main.h"
int main(int argc, char *argv[])
{
if (argc==2 && argv[1][0]=='?') {
PRINT_VERSION;
exit(0);
}
if(!verscheck_init())
{
verscheck_close();
return(1L);
}
IDisplayBorders(ri, win, &verscheck_border_data[0], 0, 0);
IDisplayGadgets(win,gl);
verscheck_action();
verscheck_close();
return(0L);
}
BOOL verscheck_init( void )
{
if (!(IntuiSupBase = (struct Library*)OpenLibrary(IntuiSupName,IntuiSupVersion)) )
return FALSE;
if (!(ri = IGetRenderInfo(NULL, RENDER_INFO_FLAGS)) )
return FALSE;
if (!(win = IOpenWindow(ri, &verscheck_new_window,OPEN_WINDOW_FLAGS)) )
return FALSE;
if (!(gl = ICreateGadgets(ri,&verscheck_gadget_data[0], 0, 0, NULL)) )
return FALSE;
verscheck_defaults(0);
return TRUE;
}
void verscheck_close( void )
{
if (gl) IRemoveGadgets(gl);
if (gl) IFreeGadgets(gl);
if (win) ICloseWindow(win, FALSE);
if (ri) IFreeRenderInfo(ri);
if (IntuiSupBase) CloseLibrary(IntuiSupBase);
}
void verscheck_action( void )
{
UBYTE exestr[512];
UBYTE tmpstr[512];
BOOL keepon =TRUE;
int start =0;
int libcheck=0;
int all =1;
int sysinfo =1;
int fullpath=1;
int merge =0;
int noreq =0;
int html =1;
int verbose =1;
int ppc =0;
int images =0;
do
{
struct IntuiMessage *msg;
WaitPort(win->UserPort);
while (msg = IGetMsg(win->UserPort))
{
ULONG Class=msg->Class;
USHORT Code=msg->Code;
LONG IAddress=(LONG)msg->IAddress;
IReplyMsg(msg);
switch(Class)
{
case CLOSEWINDOW:
keepon = FALSE;
break;
case ISUP_ID:
switch(Code)
{
case VERSCHECK_GADGET_LIBCHECK:
libcheck=IAddress;
verscheck_defaults(libcheck);
break;
case VERSCHECK_GADGET_ALL:
all=IAddress;
break;
case VERSCHECK_GADGET_SYSINFO:
sysinfo=IAddress;
break;
case VERSCHECK_GADGET_FULLPATH:
fullpath=IAddress;
break;
case VERSCHECK_GADGET_MERGE:
merge=IAddress;
break;
case VERSCHECK_GADGET_NOREQ:
noreq=IAddress;
break;
case VERSCHECK_GADGET_HTML:
html=IAddress;
break;
case VERSCHECK_GADGET_VERBOSE:
verbose=IAddress;
break;
case VERSCHECK_GADGET_POWEREXE:
ppc=IAddress;
break;
case VERSCHECK_GADGET_IMAGES:
images=IAddress;
break;
case VERSCHECK_GADGET_SUFFIX:
sprintf(suffix,"%s",(char *)IAddress);
break;
case VERSCHECK_GADGET_LIST:
sprintf(chklst,"%s",(char *)IAddress);
break;
case VERSCHECK_GADGET_OUTFILE:
sprintf(ofname,"%s",(char *)IAddress);
break;
case VERSCHECK_GADGET_FILEDIR:
sprintf(dirnam,"%s",(char *)IAddress);
break;
case VERSCHECK_GADGET_START:
keepon=FALSE;
start=1; /* start ONE check */
break;
case VERSCHECK_GADGET_STARTALL:
keepon=FALSE;
libcheck=0;
start=2; /* start ALL checks */
break;
}
}
}
} while (keepon == TRUE);
while(start)
{
if (start==2)
{
verscheck_defaults(libcheck);
sysinfo=1;
images=0;
noreq=1;
}
strcpy(exestr,"VersCheck ");
switch(libcheck)
{
case 1:
strcat(exestr,"-2 ");
break;
case 2:
strcat(exestr,"-3 ");
break;
case 3:
strcat(exestr,"-4 ");
break;
case 4:
strcat(exestr,"-5 ");
break;
case 5:
case 6:
case 7:
case 8:
case 9:
sprintf(tmpstr, "-0s %s -0l %s -0n %s ", suffix, chklst, ofname);
strcat(exestr,tmpstr);
strcpy(dirnam,"Sys:Classes");
merge=2;
sysinfo=0;
break;
case 10:
break;
default:
strcat(exestr,"-1 ");
break;
}
if (all) strcat(exestr,"-a ");
if (sysinfo) strcat(exestr,"-s ");
if (fullpath) strcat(exestr,"-f ");
if (merge) strcat(exestr,"-m ");
if (noreq) strcat(exestr,"-n ");
if (html) strcat(exestr,"-o ");
if (verbose) strcat(exestr,"-v ");
switch(ppc)
{
case 1:
strcat(exestr,"-x1 ");
break;
case 2:
strcat(exestr,"-x2 ");
break;
case 3:
strcat(exestr,"-x3 ");
break;
default:
break;
}
switch(images)
{
case 1:
strcat(exestr,"-p ");
break;
case 2:
strcat(exestr,"-P ");
break;
default:
break;
}
if (merge==2)
{
sprintf(tmpstr,"%s -s MUI: >CON:0/0/640/250/VersCheckGUI",exestr);
Execute(tmpstr,0L,0L);
}
sprintf(tmpstr,"\"%s\"",dirnam); /* make shure that blank in filename will work */
strcat(exestr,tmpstr);
strcat(exestr," >CON:0/0/640/250/VersCheckGUI");
Execute(exestr,0L,0L);
if (start==1) break;
libcheck++;
if (libcheck>9) start=0;
};
}
void verscheck_set_gadgets(int check)
{
if (check<3)
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_HTML,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, 1,
(void *) USE_CURRENT_VALUE);
}
else
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_HTML,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, 0,
(void *) USE_CURRENT_VALUE);
}
if (check<5)
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, 0,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
suffix);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
chklst);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
ofname);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
dirnam);
}
else if (check>4 && check<10)
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, 1,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, 0,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
suffix);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
chklst);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
ofname);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
dirnam);
}
else if (check==10)
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
suffix);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
chklst);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
ofname);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
dirnam);
}
else if (check>10)
{
ISetGadgetAttributes(gl, VERSCHECK_GADGET_MERGE,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_IMAGES,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
(void *) USE_CURRENT_VALUE);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_SUFFIX,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
suffix);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_LIST,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
chklst);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_OUTFILE,
GADGET_DATA_FLAG_DISABLED, GADGET_DATA_FLAG_DISABLED,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
ofname);
ISetGadgetAttributes(gl, VERSCHECK_GADGET_FILEDIR,
GADGET_DATA_FLAG_DISABLED, 0,
USE_CURRENT_VALUE, USE_CURRENT_VALUE,
dirnam);
}
}
void verscheck_defaults(int check)
{
switch(check)
{
case 1:
strcpy(suffix,"<intern>");
strcpy(chklst,"<intern>");
strcpy(ofname,"<intern>");
strcpy(dirnam,"Devs:");
break;
case 2:
strcpy(suffix,"<intern>");
strcpy(chklst,"<intern>");
strcpy(ofname,"<intern>");
strcpy(dirnam,"Sys:Classes/Datatypes");
break;
case 3:
strcpy(suffix,"<intern>");
strcpy(chklst,"<intern>");
strcpy(ofname,"<intern>");
strcpy(dirnam,"MUI:Libs/MUI");
break;
case 4:
strcpy(suffix,"<intern>");
strcpy(chklst,"<intern>");
strcpy(ofname,"<intern>");
strcpy(dirnam,"l:");
break;
case 5:
strcpy(suffix,".class");
strcpy(chklst,"ClassList");
strcpy(ofname,"CLASS");
strcpy(dirnam,"<intern>");
break;
case 6:
strcpy(suffix,".image");
strcpy(chklst,"ImageList");
strcpy(ofname,"CLASSIMG");
strcpy(dirnam,"<intern>");
break;
case 7:
strcpy(suffix,".gadget");
strcpy(chklst,"GadgetList");
strcpy(ofname,"CLASSGAD");
strcpy(dirnam,"<intern>");
break;
case 8:
strcpy(suffix,".codec");
strcpy(chklst,"CodecList");
strcpy(ofname,"CLASSCOD");
strcpy(dirnam,"<intern>");
break;
case 9:
strcpy(suffix,".decoder");
strcpy(chklst,"DecoderList");
strcpy(ofname,"CLASSDEC");
strcpy(dirnam,"<intern>");
break;
case 10:
strcpy(suffix,"");
strcpy(chklst,"");
strcpy(ofname,"");
strcpy(dirnam,"");
break;
case 11:
strcpy(suffix,"<OFF>");
strcpy(chklst,"<OFF>");
strcpy(ofname,"<OFF>");
strcpy(dirnam,"c:");
break;
default:
strcpy(suffix,"<intern>");
strcpy(chklst,"<intern>");
strcpy(ofname,"<intern>");
strcpy(dirnam,"Libs:");
break;
}
verscheck_set_gadgets(check);
}